IAMによるAWS WAFのアクセス制御
こんにんちは、虎塚です。
AWS WAF が登場して、どんどん試している最中かと思いますが、アクセス制御には気をつけましょう。IAMユーザ、IAMグループ、またはIAMロールに紐付けるためのIAMポリシーを作成するのは、いつもと同じです。
AWS WAF関連のIAM設定を簡単にご紹介します。
IAMポリシーでできる制御
AWS WAFのアクセス制御と言ったとき、次の2種類があることを念頭に置いておいてください。
- AWS WAF自体のアクセス制御
- AWS WAFが必要とする他のAWSサービスへのアクセス制御
AWS WAFやシステムのセキュリティ面では前者が重要です。後者はWAFが動作するために必要です。
また、ユーザアクセスは、AWS WAF全体とWAFのサブセットに対して与えることができます。WAFのサブセットというのは、各ルールやIPアドレスセットのことです。
設定の例
Read Only
AWS WAFに対してRead Onlyの設定をするには、次のようなポリシーを用意します。AWS WAFの設定を確認だけしたいとき/させたいときにどうぞ。
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "waf:Get*", "waf:List*", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions" ], "Effect": "Allow", "Resource": "*" } ] }
管理者
AWS WAFに対する管理者権限のポリシーは、次のように定義します。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "waf:*", "cloudfront:CreateDistribution", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:UpdateDistribution", "cloudfront:ListDistributions", "cloudfront:DeleteDistribution" ], "Effect": "Allow", "Resource": "*" } ] }
上記の定義を与えると、Web ACLを作成したり削除したりできます。また、新規・既存のCloudFrontディストリビューションに、追加のWAFルールとして、作成したWeb ACLを選択することもできるようになります。
特定のWAF要素に対するアクセス制御
公式ドキュメントのとおり、AWS WAFはルールやWebACLなどいくつか要素から構成されています。IAMポリシーでは、次のリソース単位でアクセス制御を設定できます。
- ByteMatchSet
- IPSet
- SqlInjectionMatchSet
- Rule
- WebACL
IAMポリシーに記述するResourceの記法は、次のようになります。
arn:aws:waf::account:resource/ID
resource部分に、前述の各要素が入ります。細かい単位でアクセス制御ができますので、複数のシステムでルールを共有することも、逆にさせないこともできますね。
おわりに
セキュリティに気をつけつつ、AWS WAFでいろいろ試してみたいと思います。
それでは、また。